package main

import (
	"fmt"
	"runtime"
	"sync"
)

// 使用wg等待程序执行完成
var wg sync.WaitGroup

func main() {
	// 指定调度器所能所能调度的逻辑处理器的数量
	runtime.GOMAXPROCS(1)

	wg.Add(2)

	fmt.Println("start goroutine")

	go printPrime("A")
	go printPrime("B")

	//等待goroutine结束
	fmt.Println("Waiting for finish")
	wg.Wait()

	fmt.Println("program end")
}

func printPrime(prefix string) {
	// 函数退出时通过Done通知main函数工作已经完成
	defer wg.Done()

nextNum:
	for i := 2; i < 6000; i++ {
		for j := 2; j < i; j++ {
			if i%j == 0 {
				continue nextNum
			}
		}
		fmt.Printf("%s:%d\n", prefix, i)
	}
	fmt.Printf("complete %s\n", prefix)
}
